/*******************************************************************
 *   > File Name: key.h
 *   > Author: fly
 *   > Mail: XXXXXXXX@icode.com
 *   > Create Time: 2020年12月07日 星期一 19时52分42秒
 ******************************************************************/
#ifndef __KEY_H__
#define __KEY_H__

// 定义操作寄存器的宏
// 设置按键GPIO的控制寄存器及数据寄存器
#define	GPH0CON				0xE0200C00
#define	GPH0DAT				0xE0200C04
#define	GPH2CON				0xE0200C40
#define	GPH2DAT				0xE0200C44

#define	rGPH0CON			(*(volatile unsigned int *)GPH0CON)
#define	rGPH0DAT			(*(volatile unsigned int *)GPH0DAT)
#define	rGPH2CON			(*(volatile unsigned int *)GPH2CON)
#define	rGPH2DAT			(*(volatile unsigned int *)GPH2DAT)

// 外部中断控制寄存器
#define	EXT_INT_0_CON		0xE0200E00
#define	EXT_INT_2_CON		0xE0200E08
#define	EXT_INT_0_PEND		0xE0200F40
#define	EXT_INT_2_PEND		0xE0200F48
#define	EXT_INT_0_MASK		0xE0200F00
#define	EXT_INT_2_MASK		0xE0200F08

#define	rEXT_INT_0_CON		(*(volatile unsigned int *)EXT_INT_0_CON)
#define	rEXT_INT_2_CON		(*(volatile unsigned int *)EXT_INT_2_CON)	
#define	rEXT_INT_0_PEND		(*(volatile unsigned int *)EXT_INT_0_PEND)	
#define	rEXT_INT_2_PEND		(*(volatile unsigned int *)EXT_INT_2_PEND)	
#define	rEXT_INT_0_MASK		(*(volatile unsigned int *)EXT_INT_0_MASK)	
#define	rEXT_INT_2_MASK		(*(volatile unsigned int *)EXT_INT_2_MASK)	

#define	KEY_EINT2			NUM_EINT2		// left
#define	KEY_EINT3			NUM_EINT3		// down
#define	KEY_EINT16_19		NUM_EINT16_31	// 其余4个共用的

extern void key_init_interrupt(void);
extern void isr_eint2(void);
extern void isr_eint3(void);
extern void isr_eint16171819(void);	
extern void tester_key_int(void);	

#endif /* __KEY_H__ */
